package com.example.myapplication3; // 请替换成你自己的包名

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    // 定义消息代码
    private static final int LOGIN_SUCCESS = 1;
    private static final int LOGIN_FAILED = 0;
    private static final int LOGIN_START = 2;


    private EditText editTextUsername;
    private EditText editTextPassword;
    private Button buttonLogin;
    private ProgressBar progressBar;

    // 1. 创建一个Handler对象，并重写handleMessage方法
    // 这个Handler会自动绑定到主线程（UI线程）的Looper
    private final Handler handler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            // 在这里根据接收到的消息更新UI
            switch (msg.what) {
                case LOGIN_START:
                    progressBar.setVisibility(View.VISIBLE);
                    buttonLogin.setEnabled(false); // 防止重复点击
                    Toast.makeText(MainActivity.this, "登录中...", Toast.LENGTH_SHORT).show();
                    break;
                case LOGIN_SUCCESS:
                    progressBar.setVisibility(View.GONE); // 隐藏ProgressBar
                    buttonLogin.setEnabled(true); // 恢复按钮
                    Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    // 在这里可以添加跳转到主页的代码
                    break;
                case LOGIN_FAILED:
                    progressBar.setVisibility(View.GONE); // 隐藏ProgressBar
                    buttonLogin.setEnabled(true); // 恢复按钮
                    Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置内容视图为你的约束布局文件
        setContentView(R.layout.activity_cons);

        // 初始化控件
        editTextUsername = findViewById(R.id.editText_username);
        editTextPassword = findViewById(R.id.editText_password);
        buttonLogin = findViewById(R.id.button_login);
        progressBar = findViewById(R.id.progressBar);

        // 设置登录按钮的点击监听器
        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取用户输入的用户名和密码
                final String username = editTextUsername.getText().toString().trim();
                final String password = editTextPassword.getText().toString().trim();

                // 2. 启动一个新的子线程来执行耗时操作
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // 发送一个消息，通知主线程开始登录（显示ProgressBar）
                        handler.sendEmptyMessage(LOGIN_START);

                        try {
                            // 模拟网络请求或数据库验证，这里我们让线程休眠3秒
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                        // 3. 模拟验证逻辑
                        // 为了演示，我们假设正确的用户名是 "admin"，密码是 "123456"
                        if ("admin".equals(username) && "123456".equals(password)) {
                            // 验证成功，发送成功的消息
                            handler.sendEmptyMessage(LOGIN_SUCCESS);
                        } else {
                            // 验证失败，发送失败的消息
                            handler.sendEmptyMessage(LOGIN_FAILED);
                        }
                    }
                }).start(); // 别忘了启动线程
            }
        });
    }
}